package Management;

import java.util.ArrayList;
import java.util.List;

import bean.dao.ProveedorDAO;
import Entities.*;
import paquetes.negocioVO.ProveedorVO;

public class ManagementProveedor {

	private static ManagementProveedor instancia;
	
	public static ManagementProveedor getInstancia(){
		if(instancia == null)
			instancia = new ManagementProveedor();
		return instancia;
	}

	public ProveedorVO EntitieAVo(Proveedor proveedor) {
		ProveedorVO proveedorVO = new ProveedorVO();
		proveedorVO.setNombre(proveedor.getNombre());
		proveedorVO.setTelefonoContacto(proveedor.getTelefonoContacto());
		proveedorVO.setDeuda(proveedor.getDeuda());
		return proveedorVO;
	}

	public Proveedor VoAEntitie(ProveedorVO proveedorVO) {
		Proveedor proveedor = new Proveedor();
		proveedor.setNombre(proveedorVO.getNombre());
		proveedor.setTelefonoContacto(proveedorVO.getTelefonoContacto());
		proveedor.setDeuda(proveedorVO.getDeuda());
		return proveedor;
	}

	public void modificarProveedor(ProveedorVO proveedorVO) {
		Proveedor proveedor = this.VoAEntitie(proveedorVO);
		ProveedorDAO miProveedorDAO = new ProveedorDAO();
		miProveedorDAO.actualizarProveedor(proveedor);
	}

	public void guardarProveedor(String nombre, String TelefonoContacto, float Deuda) {
		Proveedor proveedor = new Proveedor();
		ProveedorDAO miProveedorDAO = new ProveedorDAO();
		
		proveedor.setNombre(nombre);
		proveedor.setTelefonoContacto(TelefonoContacto);
		proveedor.setDeuda(Deuda);

		miProveedorDAO.altaProveedor(proveedor);
		
	}

	public void baja(int id) {
		ProveedorDAO miProveedorDAO = new ProveedorDAO();
		miProveedorDAO.bajaProveedor(id);
	}

	public List<ProveedorVO> dameProveedores() {
		try {
			ProveedorDAO miProveedor = new ProveedorDAO();
			List<Proveedor> proveedores = miProveedor.getProveedores();
			System.out.print(proveedores.size());
			List<ProveedorVO> proveedorVO = new ArrayList<ProveedorVO>();
			for (int i=0;i<proveedores.size();i++)
			{
				ProveedorVO p = this.EntitieAVo(proveedores.get(i));
				proveedorVO.add(p);
			}
			return proveedorVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public ProveedorVO traemeProveedor(Integer cuil) {
		try {
			ProveedorDAO miProveedor = new ProveedorDAO();
			Proveedor p = miProveedor.getProveedor(cuil);
			if (p==null)
				return null;
			ProveedorVO pVO = this.EntitieAVo(p);
			return pVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return null;
	}
}
